<!doctype html>
<html>
<head>
    <title>倔强的土豆</title>

    
        <meta charset="UTF-8">
<meta name="viewport", content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href='/public/css/screen.css'>
<link rel="stylesheet" href='/public/css/syntax.css'>
<link rel="stylesheet" href="/public/styles/default.css">
<script src="/public/js/highlight.pack.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
    
</head>
<body>
    <div class="site">
        
            <div class="header">
            <div class="title">
    <a href="/">倔强的土豆</a>
    <a class="extra" href="/">home</a>
</div>
            </div>
        
        <!--
            <nav class="menu">
    <ul>
        <li>
            <a class="extra" href="/">分类</a></li>
        <li>
            <a class="extra" href="/">归档</a></li>
        <li>
            <a class="extra" href="/">标签</a></li>
    </ul>
</nav>
        -->
        
<div class="main">
    <p>Git 是目前最流行的分布式版本控制系统。
以前学习的时候各种找资料，奈何互联网太大，眼花缭乱，故整理一个基础版本的教程。</p>
<p>&lt;!-- more --&gt;
</p>
<h2 id="-">小故事</h2>
<p>很多人都知道，Linus在1991年创建了开源的Linux，从此，Linux系统不断发展，已经成为最大的服务器系统软件了。</p>
<p>Linus虽然创建了Linux，但Linux的壮大是靠全世界热心的志愿者参与的，这么多人在世界各地为Linux编写代码，那Linux的代码是如何管理的呢？</p>
<p>事实是，在2002年以前，世界各地的志愿者把源代码文件通过diff的方式发给Linus，然后由Linus本人通过手工方式合并代码！</p>
<p>你也许会想，为什么Linus不把Linux代码放到版本控制系统里呢？不是有CVS、SVN这些免费的版本控制系统吗？因为Linus坚定地反对CVS和SVN，这些集中式的版本控制系统不但速度慢，而且必须联网才能使用。有一些商用的版本控制系统，虽然比CVS、SVN好用，但那是付费的，和Linux的开源精神不符。</p>
<p>不过，到了2002年，Linux系统已经发展了十年了，代码库之大让Linus很难继续通过手工方式管理了，社区的弟兄们也对这种方式表达了强烈不满，于是Linus选择了一个商业的版本控制系统BitKeeper，BitKeeper的东家BitMover公司出于人道主义精神，授权Linux社区免费使用这个版本控制系统。</p>
<p>安定团结的大好局面在2005年就被打破了，原因是Linux社区牛人聚集，不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议（这么干的其实也不只他一个），被BitMover公司发现了（监控工作做得不错！），于是BitMover公司怒了，要收回Linux社区的免费使用权。</p>
<p>Linus可以向BitMover公司道个歉，保证以后严格管教弟兄们，嗯，这是不可能的。</p>
<p>开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束，他们收回了免费使用 BitKeeper 的权力。这就迫使 Linux 开源社区（特别是 Linux 的缔造者 Linus Torvalds ）不得不吸取教训，只有开发一套属于自己的版本控制系统才不至于重蹈覆辙。他们对新的系统制订了若干目标：</p>
<ul>
<li>速度</li>
<li>简单的设计</li>
<li>对非线性开发模式的强力支持（允许上千个并行开发的分支）</li>
<li>完全分布式</li>
<li>有能力高效管理类似 Linux 内核一样的超大规模项目（速度和数据量）</li>
</ul>
<p>最后实际情况是这样的：Linus花了两周时间自己用C写了一个分布式版本控制系统，这就是Git！一个月之内，Linux系统的源码已经由Git管理了！ 牛是怎么定义的呢？大家可以感受一下。</p>
<p>Git迅速成为最流行的分布式版本控制系统，尤其是2008年，GitHub网站上线了，它为开源项目免费提供Git存储，无数开源项目开始迁移至GitHub，包括jQuery，PHP，Ruby等等。</p>
<p>历史就是这么偶然，如果不是当年BitMover公司威胁Linux社区，可能现在我们就没有免费而超级好用的Git了。</p>
<h2 id="git-">Git 教程</h2>
<p><a href="http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000">史上最浅显易懂的Git教程！--廖雪峰</a>
<a href="http://git.oschina.net/progit/">Pro Git(中文版)</a>
<a href="https://git-scm.com/download/win">Windows版本下载</a></p>
<h2 id="git-config">git config</h2>
<p>平时自己撸代码建议用oschina，毕竟国产的速度不是一般的快
如果经常和github打交道就需要设置github账号</p>
<p>Windows系统打开Git bash，Linux用户直接终端</p>
<h3 id="-">账号设置</h3>
<pre><code class="lang-bash">git config --global user.name [username]
git config --global user.email [email]
</code></pre>
<h3 id="ssh-keys">SSH Keys</h3>
<p>SSH key 可以让你在你的电脑和 Git @ OSC 之间建立安全的加密连接。</p>
<ol>
<li>你可以按如下命令来生成sshkey<pre><code class="lang-bash">ssh-keygen -t rsa -C &quot;xxxxx@xxxxx.xxx&quot;
## 一路next，看到类似下面这张图就成功生成sshkey
+---[RSA 2048]----+
|          . .o=E=|
|         . .=o=o |
|      . .  ..*.  |
|       o.o. o..  |
|        So. + . |
|      .o...   o  |
|     . .o. . .. +|
|      +.o....o.+B|
|      .=++. ..++*|
+----[SHA256]-----+
</code></pre>
</li>
<li>查看sshkey并复制<pre><code class="lang-bash">cat ~/.ssh/id_rsa.pub
</code></pre>
</li>
<li><p>添加
<img src="/images/posts/2016-12-09/sshkey.png" alt="添加"></p>
</li>
<li><p>查看</p>
<pre><code class="lang-bash">ssh -T git@git.oschina.net
Welcome to Git@OSC, yourname! #添加成功
</code></pre>
</li>
</ol>
<h2 id="-">参考链接</h2>
<p><a href="http://www.nowamagic.net/academy/detail/48160205">Git诞生背后的一些故事</a>
<a href="http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000">史上最浅显易懂的Git教程！--廖雪峰</a>
<a href="http://git.oschina.net/progit/">Pro Git(中文版)</a></p>

</div>

        
            <div class="footer">
    <div class="contact">
        <p>
            <!--jjtudou-->
            <!--<br /> -->
            <!--<a href="https://codestarter.org/">Codestarter</a>,
            <a href="https://github.com/">GitHub</a>-->
            QQ:438678287 [SHINE TU] 
        </p>
    </div>
    <!--
    <div class="contact">
        <p>
            <a href="http://github.com/mojombo/">github.com/mojombo</a><br />
            <a href="http://twitter.com/mojombo/">twitter.com/mojombo</a><br />
        </p>
    </div>-->
    <!--<div class="rss">
        <a href="http://feeds.feedburner.com/tom-preston-werner">
            <img src="/images/rss.png" alt="Subscribe to RSS Feed" />
        </a>
    </div>-->
</div>
        
    </div>
</body>
</html>